#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>

#include "friendsessionarea.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWidget;
}
QT_END_NAMESPACE

class MainWidget : public QWidget
{
    Q_OBJECT

public:
    static MainWidget* getInstance();
    ~MainWidget();


    // 删除拷贝构造 与 赋值运算符
    MainWidget(const MainWidget&) = delete;
    MainWidget& operator = (const MainWidget&) = delete;
private:
    MainWidget(QWidget *parent = nullptr);
    // 初始化
    // 主窗口的样式布局
    void initWindowMain();
    // 左侧 导航栏样式布局
    void initWindowLeft();
    // 中间 信息布局
    void initWindowMid();
    // 右侧 实际内容布局
    void initWindowRight();
    // 信号槽
    void initSignalSlot();
    // websocket
    void initWebSocket();

private:
    Ui::MainWidget *ui;

    // 实例
    static MainWidget* instance;

    // 窗口左侧部分，导航栏
    QWidget* window_left;
    // 窗口中间部分，信息列表
    QWidget* window_mid;
    // 窗口右侧部分，实际信息
    QWidget* window_right;

    // 用户头像
    QPushButton* userAvatar;
    // 会话标签页按钮
    QPushButton* sessionTabBtn;
    // 好友标签页按钮
    QPushButton* friendTabBtn;
    // 好友申请标签页按钮
    QPushButton* applyTabBtn;

    // 搜索框
    QLineEdit* search_edit;
    // 添加好友按钮
    QPushButton* add_friend_btn;
    // 会话区域
    FriendSessionArea* friend_session_area;

    // 显示会话标题
    QLabel* session_title_label;
    // 显示会话详情按钮
    QPushButton* session_title_btn;
    // 消息展示区
};
#endif // MAINWIDGET_H
